export function findIndexByLabel(arr : string | any[], searchString : any, type : string) {
	for (var i = 0; i < arr.length; i++) {
		if (arr[i][type] === searchString) {
			return i;
		}
	}
	return -1; // 如果未找到匹配项，则返回 -1
}
/**
 * 判断给定的值是否为空
 * @param value - 需要检查的值
 * @returns boolean - 如果值为空则返回 true，否则返回 false
 */
export function isEmpty(value : any) : boolean {
	if (value === null || value === undefined) return true;
	if (typeof value === 'string' && value.trim() === '') return true;
	if (Array.isArray(value) && value.length === 0) return true;
	if (typeof value === 'object' && Object.keys(value).length === 0) return true;
	return false;
}

/**
 * 递归移除对象中所有空属性
 * @param obj - 需要处理的对象
 * @returns Partial<T> - 移除了空属性后的新对象
 */
export function removeEmptyProperties<T extends Record<string, any>>(obj : T) : Partial<T> {
	// 如果传入的不是对象或为null，直接返回原值
	if (typeof obj !== 'object' || obj === null) return obj;

	// 创建一个新的对象或数组来存储结果
	const result : Partial<T> = Array.isArray(obj) ? [] : {};

	// 遍历对象的每一个键值对
	for (const [key, value] of Object.entries(obj)) {
		// 递归处理嵌套的对象
		const cleanedValue = removeEmptyProperties(value);

		// 如果清理后的值不为空，则将其添加到结果中
		if (!isEmpty(cleanedValue)) {
			result[key as keyof T] = cleanedValue;
		}
	}

	return result;
}
/**
* 合并两个对象的属性，并返回一个新的合并后的对象
* @param obj1 第一个对象
* @param obj2 第二个对象
* @returns 一个新的合并后的对象
*/
export function mergeObjects(obj1 : Record<string, any>, obj2 : Record<string, any>) : any {
	const result = { ...obj1 }; // 克隆 obj1 以避免修改原对象

	// 遍历 obj1 的所有属性
	for (const key in result) {
		// 如果 obj2 也有这个属性，使用 obj2 的值
		if (obj2.hasOwnProperty(key)) {
			result[key] = obj2[key];
		}
	}

	return result;
}


export function colors(level : string, type : string) {
	const customerLevelToColorMap = {
		'grading': {
			'一级客户': '#9161f2',
			'二级客户': '#3d97f2',
			'三级客户': '#55aa7f'
		},
		'manner': {
			'按出库对账-赊销': '#3d97f2',
			'按单收款-现结': '#2fba2f'
		},
	};
	//
	return customerLevelToColorMap[type][level];
}
/**
 * 
 * @param {any} number 
 * @return 
 */
export function formatNumber(number : any, type : string = '') {
	// 先转换为保留两位小数的字符串
	let formattedNumber = number.toFixed(2);

	// 添加千位分隔符
	formattedNumber = formattedNumber.replace(/\B(?=(\d{3})+(?!\d))/g, ',');

	return `${formattedNumber} ${type}`;
}
export function splitBy(str : string) {
	const strs = str.split(/(?=[A-Z])/);
	const result = `${strs[0]}_${strs[1]}`;
	let type = '';
	console.log('strs[strs.length - 1] --->', strs[strs.length - 1]);
	if (strs[strs.length - 1] === 'Id') {
		type = 'select';
	}
	if (strs[strs.length - 1] !== 'Id') {
		type = 'text';
	}
	return { result, type };
}